package cn.initcap.common;

import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.HashMap;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;

/**
 * @author initcap
 * @date 2018/5/17 PM9:48
 */
@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class JsonData {

    /**
     * 返回是否成功
     */
    private boolean ret;

    /**
     * 返回的信息
     */
    private String msg;

    /**
     * 放回的数据
     */
    private Object data;

    public JsonData(boolean ret) {
        this.ret = ret;
    }

    /**
     * 成功并返回数据与信息
     *
     * @param object 对象
     * @param msg    信息
     * @return JsonData
     */
    public static JsonData success(Object object, String msg) {
        JsonData jsonData = new JsonData(true);
        jsonData.data = object;
        jsonData.msg = msg;
        return jsonData;
    }


    /**
     * 成功并返回数据
     *
     * @param object 对象
     * @return JsonData
     */
    public static JsonData success(Object object) {
        JsonData jsonData = new JsonData(true);
        jsonData.data = object;
        return jsonData;
    }

    /**
     * 成功
     *
     * @return JsonData
     */
    public static JsonData success() {
        return new JsonData(true);
    }

    /**
     * 失败时
     *
     * @param msg 信息
     * @return JsonData
     */
    public static JsonData fail(String msg) {
        JsonData jsonData = new JsonData(false);
        jsonData.msg = msg;
        return jsonData;
    }


    /**
     * @return Map类型数据
     */
    public Map<String, Object> toMap() {
        HashMap<String, Object> result = new HashMap<String, Object>(4);
        result.put("ret", ret);
        result.put("msg", msg);
        result.put("data", data);
        return result;
    }
}
